package com.xinzhidi.common.utils.uuid;

/**
 * ID生成器工具类
 *
 * @author ruoyi
 */
public class IdUtils {
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID() {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID() {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID() {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID() {
        return UUID.fastUUID().toString(true);
    }


    /**
     * 生成唯一数字（字符串）
     *
     * @param length 生成的数字长度  位数不足前面补0
     * @return
     */
    public static String generateUniqueNumber(Integer length) {

        Integer num = 10;
        for (int i = 0; i < length - 1; i++) {
            num = num * 10;
        }

        UUID uuid = UUID.randomUUID();
        int uniqueNumber = uuid.hashCode();
        uniqueNumber = Math.abs(uniqueNumber % num); // 取绝对值并截取为6位数字
        String uniqueNumberStr = String.valueOf(uniqueNumber);
        if (uniqueNumberStr.length() <= length) {
            int m = length - uniqueNumberStr.length();
            String str = "";
            for (int i = 0; i < m; i++) {
                str += "0";
            }
            uniqueNumberStr = str + uniqueNumberStr;
        }
        return uniqueNumberStr;
    }
}
